import _config from './config'; // 导入私有配置

export default function $http(options) {
	//console.log(_config.url, options.url)
	options.url = _config.url + options.url;
	return new Promise((resolve, reject) => {
		// 进行url字符串拼接
		// 拦截请求
		_config.complete = (response) => {
			//  request請求访问成功
			if (response.statusCode === 200) {
				// 接口请求成功
				resolve(response);
			} else {
				// 处理catch 请求，不在本页面之外处理，统一在这里处理
				if (options.handle) {
					reject(response)
				} else {
					try {
						Promise.reject(response).catch(err => {
							// console.error(err);  
							_page_error(response.statusCode || response.errMsg);
						});
					} catch (e) {
						console.log(e)
					}
				}
			}

		}
		// 开始请求
		uni.request(Object.assign({}, _config, options));
	})
}

// 接口錯誤
function _error(err, msg = '') {
	switch (err) {
		case 400:
			console.error(msg)
			// 错误码400的处理方式
			break;
	}
}
// request 錯誤
function _page_error(err) {
	switch (err) {
		case 400:
			// 错误码401的处理方式
			console.error("400 请求被拒绝");
			console.log();
			uni.showModal({
			    title: '提示',
			    content: '请求超时请重试',
				showCancel: false,
			    success: function (res) {
			        uni.navigateBack();
			    }
			});
			break;
		case 401:
			// 错误码401的处理方式
			console.error("401 请求被拒绝");
			uni.navigateTo({
				url: '/pages/login/login'
			})
			break;
		case 403:
			console.error("403 封号了");
			uni.navigateTo({
				url: '/pages/errorPage/errorPage?type=kickout'
			})
			break;
		case 404:
			console.error("404 内容不见了");
			uni.navigateTo({
				url: '/pages/errorPage/errorPage?type=notfound'
			})
			break;
		case 500:
			console.error("500 出错啦");
			// uni.navigateTo({
			// 	url: '/pages/errorPage/errorPage?type=server'
			// })
			break;
		case 504:
			console.error("504 网络不给力")
			uni.navigateTo({
				url: '/pages/errorPage/errorPage?type=network'
			})
			break;
	}
}
